package main

import (
	// 导入session包
	"github.com/gin-contrib/sessions"
	// 导入session存储引擎
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
)

func main() {
	//router:=gin.Default()
	//router.GET("/cookie", func(ctx *gin.Context) {
	//	cookie,err:=ctx.Cookie("gin_cookie")
	//	if err!=nil{
	//		cookie="NotSet"
	//		ctx.SetCookie("gin_cookit","test_val",3600,"/","localhost",false,true)
	//	}
	//	fmt.Printf("Cookie value: %s \n", cookie)
	//})
	//
	//router.Run()
	r := gin.Default()
	// 创建基于cookie的存储引擎，secret123 参数是用于加密的密钥
	store := cookie.NewStore([]byte("secret123"))
	// 设置session中间件，参数mysession，指的是session的名字，也是cookie的名字  一个session对一个cookie
	//路由上加入session中间件
	r.Use(sessions.Sessions("mysession", store))

	r.GET("/login", func(c *gin.Context) {
		session := sessions.Default(c)
		queryname := c.Query("name")
		querypass := c.Query("pass")
		session.Set("name", queryname)
		session.Set("pass", querypass)
		session.Save() //调用save的时候 ，会重新生成一个包含上述内容的session ，保存起来。
		c.JSON(200, gin.H{"success": "ok", "name": session.Get("name"), "pass": session.Get("pass")})
	})
	r.GET("/user", func(c *gin.Context) {
		session := sessions.Default(c)
		c.JSON(200, gin.H{"name": session.Get("name"), "pass": session.Get("pass")})
	})
	r.Run(":8080")
}

// 设置session数据
//session.Set(“hello”, “world”)
// 删除session数据
//session.Delete(“hello”)
//清空session
//session.Clear()
// 保存session数据
//session.Save()
// 删除整个session
// session.Clear()
